An electronic device normally comprises a platform for the execution of programs. More particularly, the electronic device generally comprises a hardware platform including low level components, for example the circuitry, memory portions and processors, and a software platform including a set of service programs.
The service programs are provided for supporting the execution of user programs. More particularly, a java platform is a software platform including a compiler and an execution engine, also known as java virtual machine, which allows the execution of user programs, also indicated as java applets, since they are programmed in the java language.
A known feature of the java language is the so-called portability, that is to say the possibility to execute a same java applet on different hardware platforms, without modifying the code of the java applet.
In this way a java applet coded by a same manufacturer for both a first electronic device, comprising a first hardware platform, and a second electronic device, provided with a second hardware platform, may be executed substantially without modifications by both the electronic devices.
According to the above description, an IC Card is an electronic device usually provided with a specific java platform, also indicated java card platform, intended to support the execution of specific java applets, hereafter indicated as java card applets. Differently from the largest part of electronic devices, for an IC Card the portability conferred by the use of a java card platform may be a drawback for the following reasons.
Different manufacturers install their own java card platform on the hardware platform of the IC Card they produce. A first java card applet, coded by a first manufacturer for a first IC Card, is intended to be executed by a first java card platform of the first IC Card. Due to its portability, the first java card applet may be installed in a second IC Card, produced by a second manufacturer and executed by a second java card platform stored in the second IC Card.
More particularly, the first java card applet may be executed by different java card platforms, if such platforms provide the same java virtual machine. The first java card applet may require time and efforts by the first manufacturer to be developed, and it may thus be desirable to prevent its execution on the second java card platform. A simple download of the first java card applet in the second IC Card and its execution in the second java card platform could end in a discovering of the program code of the first java card applet.
Furthermore, the possibility to execute the first java card applet on the second java card platform may be a lack of security since the second manufacturer may try to discover security information related to the first IC Card. This is an issue since the IC Card should provide security. The problem described above occurs also with SIM toolkit applets that are applets provided with specific functions in order to communicate with a mobile handset.